class Solution {
public:
    int longestValidParentheses(string s) {
        stack<int> st;
        int cur = 0;
        int len = s.length();
        st.push(-1);
        int maxLen = 0;
        while(cur < len)
        {
            if(s[cur] == '('){
                st.push(cur);
            }
            // else{
            //     st.pop();
            //     maxLen = std::max(maxLen,cur-st.top());
            // }
            // if(st.empty()){
            //     st.push(cur);
            // }
            else{
                st.pop();
                if(!st.empty()){
                    maxLen = std::max(maxLen,cur - st.top());
                }
                else{
                    st.push(cur);
                }
            }
            ++cur;
        }
        return maxLen;
    }
};